
// leetcode  js编辑器默认导入 lodash.js
var twoSum = function(nums, target) {
    // for (let i = 0; ; i++) {
    //     for (let j = i + 1; ; j ++) {
    //         if (nums[i] + nums[j] === target) {
    //             return [i, j]
    //         }
    //     }
    // }
    const idx = new Map()
    for (let j = 0; ; j++) {
        const x = nums[j];
        if (idx.has(target - x)) {
            return [idx.get(target - x), j];
        }
        idx.set(x, j)
    }
}


console.log(twoSum([2,7,11,15], 9))

// js: foreach方法， 对数组的每个元素执行一次提供的函数， 类似map
// 坑： 不支持break跳出循环； return无效； 删除自身元素index不会自动重置
// https://mp.weixin.qq.com/s?__biz=MjM5MDA2MTI1MA==&mid=2649109016&idx=4&sn=441d50673987fbe8132ad67183da4305&chksm=be5815b5892f9ca310106d0659868e74352256e7597a3efaa0b136c63c0cb7e6e04832a6dd09&scene=27

var nums = [1,1,2,3]
nums.forEach(function (el) {

    console.log(el * el)
})
a = nums.filter((index) => {
    return index !== 1
})
console.log(a)

// js: setTimeout, setInterval 定时任务 param: (func, time)
// window = require('window')
// window.setTimeout(console.log("hi"), 3)
// window.setInterval(console.log("hi"), 3)

// *********************************************

// js: on() 绑定各种类型的事件
// js: slice()， split()  字符串， 数组切片


// js: set 集合
var set_exp = new Set()
set_exp.add((1,3))
set_exp.delete(1)
//  为对象添加放啊print
set_exp.print = (i) => {
    console.log(i + 1)
}
set_exp.print(10)
set_exp.forEach(function (el) {
    console.log(el * el)
})
console.log(set_exp.values())